
/*
* 封装 log4js
* 2.x以上 与 1.x 配置不同   github:  https://github.com/log4js-node/log4js-example
* 使用方法：在入口main.js引入uselog接口
*          然后 uselog(main) 例如：useLog(app)放在所有use最前面  app.use()... ;
*          在需要log的地方 import log4js
*          声明log var log = log4js.logger(文件名) 就可以使用了
*          例如 在app.js  const  log = log4js.getLogger('app'); log.info...
* */
import log4js from 'log4js';

log4js.configure('./config/log4js.json');

const category = 'http';    // 通过该变量找到 appender

// 不知道为啥这样接口暴露不成功
// var logger = name =>{
//     log4js.getLogger(name)
// };
/**
 * 调用该方法前必须确保已经configure过
 * @param name 指定log4js配置文件中的category。依此找到对应的appender。
 *              如果appender没有写上category，则为默认的category。可以有多个
 * @returns {Logger}
 */
let getLogger = function(name) {
    var logger = log4js.getLogger(name);
    logger.level = 'INFO';
    return logger;
}

/**
 * 用于express中间件，调用该方法前必须确保已经configure过
 * @returns {Function|*}
 */
export default app => {
    app.use( log4js.connectLogger(log4js.getLogger(category), {
        level: 'auto',
        // include the Express request ID in the logs
        format: (req, res, format) => format(`:remote-addr - ${req.id} - ":method :url HTTP/:http-version" :status :content-length ":referrer" ":user-agent"`)
    }));
}

